﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Manon.Gateway.ApplicationCore.Dtos.GlobalConfiguration
{
    public class SaveGlobalConfigurationInput
    {
        public int Id { get; set; }

        public string BaseUrl { get; set; }

        public string RequestIdKey { get; set; }

        public string DownstreamScheme { get; set; }

        public bool QosEnabled { get; set; }
        public int Qos_ExceptionsAllowedBeforeBreaking { get; set; }
        public int Qos_DurationOfBreak { get; set; }
        public int Qos_TimeoutValue { get; set; }
        public string LoadBalancer_Type { get; set; }
        public string LoadBalancer_Key { get; set; }
        public int LoadBalancer_Expiry { get; set; }

        public bool RateLimit_DisableRateLimitHeaders { get; set; }
        public string RateLimit_ClientIdHeader { get; set; }

        public int RateLimit_HttpStatusCode { get; set; }

        public string RateLimit_RateLimitCounterPrefix { get; set; }

        public string RateLimit_QuotaExceededMessage { get; set; }


        public bool HttpHandler_AllowAutoRedirect { get; set; }
        public bool HttpHandler_UseCookieContainer { get; set; }
        public bool HttpHandler_UseTracing { get; set; }
        public bool HttpHandler_UseProxy { get; set; }

        public int HttpHandler_MaxConnectionsPerServer { get; set; }


        public string DownstreamHttpVersion { get; set; }

        public bool ServiceDiscoveryEnabled { get; set; }
        public string ServiceDiscovery_Host { get; set; }

        public string ServiceDiscovery_Scheme { get; set; }

        public int ServiceDiscovery_Port { get; set; }

        public string ServiceDiscovery_Type { get; set; }

        public string ServiceDiscovery_Token { get; set; }

        public string ServiceDiscovery_ConfigurationKey { get; set; }

        public int ServiceDiscovery_PollingInterval { get; set; }

        public string ServiceDiscovery_Namespace { get; set; }
    }
}
